package com.dhwl.hsh.merchant.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;

import com.dhwl.hsh.lib.utils.StringUtils;
import com.dhwl.hsh.merchant.R;


/**
 * 加减控件，中间为编辑框
 *
 * @author Derek.Kidd
 * @time 2016/4/26 13:48
 */
public class PercentAddSubEditView extends RelativeLayout {
    private Context mContext;

    /**
     * 加号
     */
    private Button btnAdd;

    /**
     * 减号
     */
    private Button btnSubtract;

    /**
     * 编辑框
     */
    private EditText editNumber;

    /**
     * 可输入的最小数0.5
     */
    private final float MIN_NUMBER = 0.5f;
    /**
     * 可输入的最大数 10
     */
    private final float MAX_NUMBER = 10f;

    /**
     * 最小百分比
     */
    private float percent = MIN_NUMBER;

    public PercentAddSubEditView(Context context) {
        this(context, null);
    }

    public PercentAddSubEditView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    /**
     * AttributeSet：将自定义控件类中变量与attrs.xml中的属性连接起来。
     * defStyle：指定view的默认style的，如果是0，那么将不会应用任何默认（或者叫缺省）的style。
     * 另外这个参数可以是一个属性指定的style引用，也可以直接是一个显式的style资源。
     */
    public PercentAddSubEditView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.mContext = context;
        setWillNotDraw(false);
        initView();
    }

    /**
     * 初始化试图
     *
     * @see [类、类#方法、类#成员]
     */
    private void initView() {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(R.layout.layout_edit_addsub, this);

        btnAdd = (Button) findViewById(R.id.btn_add);
        btnSubtract = (Button) findViewById(R.id.btn_subtract);
        editNumber = (EditText) findViewById(R.id.edit_number);
        editNumber.setText(String.valueOf(percent));

        btnAdd.setOnClickListener(new OnButtonClickListener());
        btnSubtract.setOnClickListener(new OnButtonClickListener());
        editNumber.setEnabled(false);

    }

    /**
     * 设置editText中的值(0.5 -> 10 )
     *
     * @param num
     */
    public void setNum(float num) {
        if (num >= 0.5 && num <= 10) {
            editNumber.setText(String.valueOf(num));
            percent = num;
        } else {
            editNumber.setText(String.valueOf(MIN_NUMBER));
            percent = MIN_NUMBER;
        }
    }

    /**
     * 获取editText中的值
     *
     * @return
     */
    public float getNum() {
        return percent;
    }

    /**
     * 加减按钮事件监听器
     *
     * @author hjd008
     * @version [版本号, 2015-1-9]
     * @see [相关类/方法]
     * @since [产品/模块版本]
     */
    private class OnButtonClickListener implements OnClickListener {

        @Override
        public void onClick(View v) {
            String numString = editNumber.getText().toString().trim();

            percent = StringUtils.isDouble(numString) ? Float.valueOf(numString) : MIN_NUMBER;
            if (percent < MIN_NUMBER || percent > MAX_NUMBER) {
                percent = MIN_NUMBER;
            }
            if (v.getId() == R.id.btn_add) {//点击加号
                if (PercentAddSubEditView.this.percent >= MAX_NUMBER) {
                    return;
                }
                setNum(percent += MIN_NUMBER);
            } else if (v.getId() == R.id.btn_subtract) {//点击减号
                if (percent <= MIN_NUMBER) {
                    return;
                }
                setNum(percent -= MIN_NUMBER);
            }
        }
    }

}
